Cookieを利用する(3) 訪問回数を表示する
前々回と前回の講座でCookieを利用するための基礎学習は済みました。そこで、今回はCookieの具体的な活用例として、訪問回数を表示する方法を紹介します。これまでの講座内容を参考にしながら、Cookieの利用方法を研究していきましょう。

→ Cookieに訪問回数を書き込む関数を作成する
 
まずは、Cookieに訪問回数を書き込む処理を関数で自作します。この関数の名前は「setCount()」とし、保存する訪問回数は引数「n」で引き渡されるとします。関数内の処理は、前々回の講座で解説したとおりで、クッキー名を「count」、有効期限を365日としてCookieへの書き込み処理を行います。
<BODY>
 :
 :
<SCRIPT language="JavaScript">
<!--
function setCount(n){
t = new Date();
t.setTime(t.getTime()+(365*1000*60*60*24));
expt = t.toGMTString();
document.cookie = "count="+n+";expires="+expt;
}
//-->
</SCRIPT>
 :
 :
</BODY>


→ Cookieから訪問回数を読み込んで表示する関数を作成する
 
続いて、Cookieから訪問回数を読み取り、表示を行う関数「getCount()」を自作します。この関数で注意すべき点は、Cookieがある場合(2回目以降の訪問)とない場合(初回訪問の場合)の処理を分けることです。これは「start = cCookie.indexOf(cName);」の結果で判断できます。Cookieがない場合は、"count="の文字列が発見されないため、「start」には-1が代入されます。つまり、「start」が-1以外の場合は2回目以降の訪問、そうでない場合は初回の訪問となるわけです。なお、関数「getCount()」の各行での処理内容は、それぞれ以下のとおりです。

1行目:自作関数「getCount()」の宣言
2行目:変数「cName」に読み込むクッキー名を指定
3行目:変数「cCookie」にクッキーを読み込み、最後に「;」を追加する
4行目:「cCookie」内でクッキー名「cName」が登場する位置を「strat」に代入する
5行目:≪「strat」が-1でなかった場合の処理≫
6行目:「cCookie」内でクッキー名の次に登場する「;」の位置を「end」に代入する
7行目:「cCookie」から訪問回数を抜き出し、変数「count」に数値として代入する
8行目:「count回目の訪問…」と表示する
9行目:「count+1」を引数として関数「setCount()」を呼び出し、次回用の訪問回数をCookieに書き込む
10行目:≪「strat」が-1であった場合の処理≫
11行目:「初めてのご訪問…」と表示する
12行目:「2」を引数として関数「setCount()」を呼び出し、次回に「2回目の訪問…」と表示されるようにCookieに書き込む
13行目:if〜elseの終了
14行目:自作関数「getCount()」の終了
<BODY>
 :
 :
<SCRIPT language="JavaScript">
<!--
function setCount(n){
t = new Date();
t.setTime(t.getTime()+(365*1000*60*60*24));
expt = t.toGMTString();
document.cookie = "count="+n+";expires="+expt;
}
function getCount(){
cName = "count=";
cCookie = document.cookie+";";
start = cCookie.indexOf(cName);
if (start != -1){
end = cCookie.indexOf(";",start);
count = eval(unescape(cCookie.substring(start+cName.length,end)));
document.write(count+"回目の訪問ありがとうござます");
setCount(count+1);
}else{
document.write("初めてのご訪問ありがとうございます");
setCount(2);
}
}
//-->
</SCRIPT>
 :
 :
</BODY>


→ Cookieから訪問回数を読み込んで表示する
 
最後に、関数「getCount()」を呼び出せば、訪問回数を表示させるJavaScriptは完成です。Cookieに訪問回数を書き込む関数「setCount()」は、関数「getCount()」内で呼び出されるため、あらためて呼び出す必要はありません。
<BODY>
 :
 :
<SCRIPT language="JavaScript">
<!--
function setCount(n){
t = new Date();
t.setTime(t.getTime()+(365*1000*60*60*24));
expt = t.toGMTString();
document.cookie = "count="+n+";expires="+expt;
}
function getCount(){
cName = "count=";
cCookie = document.cookie+";";
start = cCookie.indexOf(cName);
if (start != -1){
end = cCookie.indexOf(";",start);
count = eval(unescape(cCookie.substring(start+cName.length,end)));
document.write(count+"回目の訪問ありがとうござます");
setCount(count+1);
}else{
document.write("初めてのご訪問ありがとうございます");
setCount(2);
}
}
getCount();
//-->
</SCRIPT>
 :
 :
</BODY>


G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMIT1~] COiq COsI